// function foo() {
// 	console.log(this) // this输出： window
// }
// foo()

// function foo() {
// 	console.log(this === obj) // this输出： window
// }
// let obj = {
// 	foo,
// }
// obj.foo()

// function foo() {
// 	console.log(this) // this输出： abc
// }
// let obj = {
// 	foo,
// }
// foo.call('abc')
// foo.apply('abc')
// foo.bind('abc')()

// let that = null
// function Person() {
// 	that = this
// }
// const per = new Person()
// console.log(per == that)

// let obj = {
// 	foo: () => {
// 		console.log(this)
// 	},
// }

// obj.foo()

// let obj = {
// 	foo: () => {
// 		console.log(this)
// 	},
// }

// obj.foo.call('abc')
// obj.foo.apply('abc')
// obj.foo.bind('abc')()

// setTimeout(() => {
// 	console.log(this)
// })

// let obj = {
// 	foo() {
// 		console.log(this)
// 	},
// }

// obj.foo.call('abc')

// let obj = {
// 	foo: () => {
// 		console.log(this) //this  ---> abc 很容易理解
// 	},
// }

// obj.foo.call('abc') // this  ---> obj

// let obj = {
// 	foo: () => {
// 		return function foo2() {
// 			console.log(this) //this  ---> abc 很容易理解
// 		}
// 	},
// }

// obj.foo.call('abc')() // this  ---> abc
// console.log(obj.foo.call('abc'))

let obj = {
	foo() {
		return () => {
			console.log(this === obj) //this  ---> abc 很容易理解
		}
	},
}

obj.foo()() // this  ---> abc
